/**
 * 主要是一个生成`token`和解析`token`的方法,我们在登录校验用户名和密码的时候就生成一个token,并且存储到`redis`中,
在守卫中使用解析`token`的方法验证当前的`token`
 */
import NodeSSO from 'node-sso';
import { ObjectType } from '../types/obj-type';

class JWT {
  private nodeSSO: NodeSSO;
  constructor(secret: string) {
    this.nodeSSO = new NodeSSO(secret);
  }

  public createToken(user: string | ObjectType): string {
    return this.nodeSSO.generateToken(user);
  }

  public decodeToken(token: string): string | null {
    return this.nodeSSO.decryptToken(token);
  }
}

export const jwt = new JWT(process.env.SECRET);
